/**
 * 面试题15相关题目：汉明距离
 * <p>
 * 两步：1.异或 2.计算异或结果中1的个数
 */
public class Offer_15_III {
    /**
     * 位运算：n & (n - 1)
     * <p>
     * n & (n - 1) 可以直接将 n 二进制表示的最低位 1 移除
     */
    public int hammingDistance(int x, int y) {
        int ans = 0;
        int xor = x ^ y;
        while (xor != 0) {
            ans++;
            xor &= xor - 1;
        }
        return ans;
    }
}
